package com.teacher.game.framework.animation;

/**
 * UI动画目标接口
 * 
 * 定义可被UI动画系统操作的对象规范。
 * 实现此接口的UI组件可以参与各种属性动画，如透明度、位置、旋转、缩放等。
 * 
 * 支持的标准属性：
 * - "alpha": 透明度 (0.0-1.0)
 * - "x", "y": 位置坐标
 * - "scaleX", "scaleY": 缩放比例
 * - "rotation": 旋转角度（度）
 * - "width", "height": 尺寸
 * 
 * @version 1.0
 * @since 2025-09-12
 */
public interface UIAnimatable {
    
    /**
     * 设置动画属性值
     * 
     * @param property 属性名称，如"alpha"、"x"、"y"等
     * @param value 属性值
     */
    void setAnimatedValue(String property, float value);
    
    /**
     * 获取当前动画属性值
     * 
     * @param property 属性名称
     * @return 当前属性值
     */
    float getAnimatedValue(String property);
    
    /**
     * 检查是否支持指定的动画属性
     * 
     * @param property 属性名称
     * @return 是否支持该属性的动画
     */
    default boolean supportsProperty(String property) {
        // 默认支持常见的UI属性
        return "alpha".equals(property) || "x".equals(property) || "y".equals(property) ||
               "scaleX".equals(property) || "scaleY".equals(property) || "rotation".equals(property) ||
               "width".equals(property) || "height".equals(property);
    }
}